Mongolab נותנת מסד נתונים מסוג MongoDB בחינם לכולם,
אז הגיע הזמן לנסות לא?
מי מכם עוד לא שמע על מסד הנתונים מסוג MongoDB?
מסד נתונים מסוג document מאוד scalable, ומהיר,
וכל הסיפור שלו מתאים לאשכול אחר, אבל אם תמיד חלמתם לנסות אותו,
אז Mongolab מאפשרת לכם לעשות זאת בקלות.
https://mongolab.com
קודם כל, אתם צריכים לוודא ש mongo מותקנת אצלכם ב PHP,
(לא המסד עצמו, אלא הדרייבר של PHP).
כדי לוודא זאת, תנסו להריץ ()new Mongo
אם ההשגיאה שהמחלקה לא קיימת, אז אתם צריכים להתקין.
מי שעובד על הלוקאלהוסט בוינדוס יכול להוריד מפה: https://github.com/mongodb/mongo-php-driver/downloads
בכל אופן, למדריך המלא להתקנת הדרייבר בלינוקס ווינדוס ניתן למצוא כאן
כעת כנסו לאתר https://mongolab.com
פיתחו חשבון, וצרו מסד נתונים חינמי של חצי ג'יגה!
צרו מסד נתונים חדש, ביחרו שם משתמש וסיסמא,
וכעת תופיע לכם שורה חדשה תחת ה databases
לחצו על השורה הזו, ותראו את הקישור להתחברות למונגו,
אמור להיראות משהו כמו זה:
mongodb://<dbuser>:<dbpassword>@ds039717.mongolab.com:39717/somedb
כאשר את <dbuser> ו <dbpassword> תחליפו בפרטים שהרגע בחרתם.
וכעת בואו נתחבר למסד הנתונים שלנו ב PHP
CRUD בסיסי
קודם בואו נבחר את המסד נתונים בו נשתמש, ואת הטבלה:
//somedb is my database name
$db = $m->somedb;
//people is the table
$collection = $db->people;
$db = $m->somedb;
//people is the table
$collection = $db->people;
לעומת Mysql אתם לא צריכים ליצור טבלה ואז להכניס אליה נתונים, אתם יוצרים אותו ברגע שאתם מכניסים אליה שורה.
כך שלא צריך לעשות שום דבר מעבר,
בחרו להשתמש בטבלה people שלא הייתה קיימת אבל עצם ההגדרה הנ"ל היא כבר קיימת ותפעל :)
הכנסת שורה
$collection->insert(array('name'=>'roman'));
בדוגמא הנ"ל העברו מערך פשוט לאותו collection וכך הכנסנו שורה חדשה :).
מציאת שורה / שורות והדפסה
$people = $collection->find();
$people_count = $people->count();
echo $people_count . ' records found<br/>';
if($people_count > 0){
?>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<? foreach($people as $v){ ?>
<tr>
<td><?php echo $v['_id']; ?></td>
<td><?php echo $v['name']; ?></td>
</tr>
<? } ?>
</tbody>
</table>
<? }
$people_count = $people->count();
echo $people_count . ' records found<br/>';
if($people_count > 0){
?>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<? foreach($people as $v){ ?>
<tr>
<td><?php echo $v['_id']; ?></td>
<td><?php echo $v['name']; ?></td>
</tr>
<? } ?>
</tbody>
</table>
<? }
בדוגמא הנ"ל ראיתם גם מספור וגם מצאנו את כל השורות,
כבר לבצע שאילתה פשוטה, ניתן להעביר מערך עם החיפוש,
מציאת שורה בודדת ועריכתה (ORM style):
$query = array('name'=>'roman');
$person = $collection->findOne($query);
$person['name'] = "korin";
$collection->save($person);
$person = $collection->findOne($query);
$person['name'] = "korin";
$collection->save($person);
המדריך הנ"ל לא בא ללמד את כל האפשרויות של מונגו,
אלא על קצה המזלג,
את הפרטים המלאים וכל האפשרויות ניתן למצוא כאן:
http://www.mongodb.org/pages/viewpage.action?pageId=589836
רציתי להכיר לכם בעיקר את mongolab,
ולפתוח לכם בקלות יתרה את הדלת למונגו דיבי,
אולי אם אמצא את עצמי במצב רוח בינוני+ אפילו אפרט עליו במדריך נוסף (למי שאלכס לא פירט לו מספיק)
שיהיה בהצלחה לכולם.
תגובות לכתבה:
תודה רבה !
לפי מה שהבנתי , המסד עצמו מאוכסן בשרתים שלהם ?
לא, זה מסד מסוג nosql.
מסד רציונלי רגיל, ינתח את השאילתה שלך ולפי זה ידע מה להוציא, לעומת מסדי nosql שהם בעצם מתאפיינים בלעקוף את השלב הזה - ובכך חוסכים זמן ריצה.
אומנם להשתמש במסד nosql לבד לא הפיתרון הכי טוב, פשוט צריך לדעת לשלב.
אני אישית משתמש בממקאש לדברים מסוימים, אבל זה לדברים נדיפים.
והמסד מאוחסן אצלך, כמו כל מסד אחר. זה לא מסד קלאוד כזה :)
אהה אוקיי .
תודה רבה :)
אם זה nosql , למה יש הגבלת זיכרון של עד חצי ג'יגה ?
כן זה יושב על השרתים שלהם,
ההגבלה היא הגבלה שלהם לחצי ג'יגה חינם, אתה יכול לשלם ולקבל יותר,
אבל זה אמור להספיק לרוב.
האם זה תחליף טוב לPDO? למה אתרים גדולים עם הרבה מידע צריכים להשתמש בזה?
זה שזה מאוחסן אצלהם זה די חיסרון לעומת יתרון
1) יותר מהיר להתחבר למסד שנמצא בשרת שלך
2) לא טוב להיות תלוי במסד של אנשים אחרים הכי טוב זה להיות תלוי בעצמך
מבחינת שאילתות רבות וכו' , האם הוא יותר מהיר מ PDO ?
PDO זה רק דרייבר לעבודה מול מסדים. מונגוDB זה מסד.
רומן הציג פה שירות של חברת mongolab שמספקת את המסד על קלאוד, שזה נחמד במקרים שאין לך אפשרות או שאתה מעדיף מסיבה כזאת או אחרת שזה יהיה על קלאוד.
כלומר , האם ניתן להתחבר דרך המסד הזה , אבל לעבוד דרך PDO ?
חיפוש קטן בגוגל יניב לך את התוצאוץ
אכן מעניין....אוהב את השימוש של MongoDB אולם כמו שצוין כאן, המימוש של NoSQL הוא במטרה כשאנחנו לא רוצים ליצור דטאבייס על השרת שלנו ולדאוג לבעיית פרפומרמנס במסדי נתונים.
למרות שאני בעד עדיין לעבוד עם MySQL בשרת שלי ולא להיות תלוי באחרים (שגם לרוב לא מאפשרים לבצע רפלקציה של המידע שאז זה בכלל בעייתי)